//package com.techsoul.module.system.utils;
//
//import com.techsoul.common.core.exception.BaseException;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.codec.binary.Base64;
//import org.bouncycastle.jce.provider.BouncyCastleProvider;
//
//import javax.crypto.Cipher;
//import javax.crypto.spec.IvParameterSpec;
//import javax.crypto.spec.SecretKeySpec;
//import java.security.*;
//
//@Slf4j
//public class AesCbcUtil {
//
//    static {
//        Security.addProvider(new BouncyCastleProvider());
//    }
//
//    /**
//     * AES解密
//     *
//     * @param data           //密文，被加密的数据
//     * @param key            //秘钥
//     * @param iv             //偏移量
//     * @return
//     * @throws Exception
//     */
//    public static String decrypt(String data, String key, String iv) throws Exception {
//        //被加密的数据
//        byte[] dataByte = Base64.decodeBase64(data);
//        //加密秘钥
//        byte[] keyByte = Base64.decodeBase64(key);
//        //偏移量
//        byte[] ivByte = Base64.decodeBase64(iv);
//
//        try {
//            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
//            SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
//            AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
//            parameters.init(new IvParameterSpec(ivByte));
//            cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
//            byte[] resultByte = cipher.doFinal(dataByte);
//            if (null != resultByte && resultByte.length > 0) {
//                String result = new String(resultByte);
//                return result;
//            }
//            return null;
//        } catch (Exception e) {
//            e.printStackTrace();
//            log.error("加密数据解析失败", e);
//            throw new BaseException("加密数据解析失败");
//        }
//    }
//}
